package com.yanqu.road.entity;


import com.yanqu.road.entity.log.maidian.BaseDataAttributeCustomGet;

import java.lang.annotation.*;
import java.sql.Types;

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
public @interface FieldTypeAnnotation {
	boolean orderASC() default false;
	boolean orderDESC() default false;
	boolean select() default false;
    boolean update() default false;
    String tableName() default "";
    String desc() default "";
    boolean autoSave() default false;
    boolean autoIncrement() default false;
    /**
     * 是否自动创建 和更新表结构
     *
     * @return
     */
    boolean autoCreateTable() default true;
    /**
     * 对应数据库的字段类型 例如 varchar = Types.VARCHAR ;text = Types.LONGVARCHAR
     * @return
     */
    int sqlType() default Types.NULL;

    /**
     * 保存格式是否为json类型
     * @return
     */
    boolean saveJson() default false;

    /**
     * 是否是索引字段
     * @return
     */
    boolean isIndex() default false;

    /**
     * 是否主键
     * @return
     */
    boolean isPk() default false;

    /**
     * 是否上传数据埋点
     * @return
     */
    boolean dataUpload() default false;

    /**
     * 数据埋点属性
     * @return
     */
    String dataAttribute() default "";

    /**
     * 数数埋点事件名称
     * @return
     */
    String eventName() default "";

    /**
     * 字段是否入库
     */
    boolean insert() default true;

    /**
     * 目标库
     */
    String dbName() default "db_road_log";

    /**
     * 列名，默认空字符的时候，取字段名
     *
     * @return
     */
    String columnName() default "";


    /**
     * 是否上传clickhouse（上传到clickhouse就不入库了）
     * @return
     */
    boolean uploadCk() default false;

    /**
     * 是否跨服日志   true为跨服日志，false为区服日志
     * @return
     */
    boolean isCross() default false;

    /**
     * 是否跨域日志   true为跨域日志，false为其他
     * @return
     */
    boolean isChannelLog() default false;


    Class<? extends BaseDataAttributeCustomGet> custom() default BaseDataAttributeCustomGet.class;
}
